home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / t_os / tool / morse / morse.bas next >
Encoding:
BASIC Source File  |  1994-11-16  |  3.8 KB  |  126 lines

  1. 10 SCREEN 0
  2. 20 CLS
  3. 25 SH=20
  4. 30 GOSUB 510
  5. 40 L=200
  6. 50 C=0
  7. 60 BC=0
  8. 70 S=0
  9. 80 K=2
  10. 90 AW=0
  11. 100 OUT &H04E8,0
  12. 110 OUT &H04E3,14
  13. 120 OUT &H04E2,&H3F
  14. 130 F=0
  15. 140 CHR%=0
  16. 150 WHILE S<SH AND BC<L*7
  17. 160   BC=BC+1
  18. 170   Y=ABS(INP(&H04E7)-128)
  19. 171   LINE(380,8)-(400,8),PSET,0
  20. 172   LINE(380,8)-(380+ABS(Y)/128*20,8),PSET,4
  21. 180   IF Y>X THEN S=Y:X=(Y*3+X)/4 ELSE S=X:X=(Y+X*3)/4
  22. 190   IF PTRIG(1)=1 THEN BEEP 1 ELSE BEEP 0
  23. 200 WEND
  24. 210 IF F>=8 THEN PRINT T$(CHR%,AW);:F=0:CHR%=0:GOTO 360
  25. 220 IF BC<5 THEN C=C+BC:GOTO 420
  26. 230 IF C<L*K THEN
  27. 240   CHR%=3^F+CHR%:L=(L+C)/2
  28. 250 ELSE
  29. 260   CHR%=2*(3^F)+CHR%:L=(L+C/3)/2
  30. 270 ENDIF
  31. 280 IF BC<L*K THEN
  32. 290   F=F+1
  33. 300   GOTO 410
  34. 310 ELSE IF BC<L*4 THEN
  35. 320   PRINT T$(CHR%,AW);:F=0:CHR%=0:GOTO 410
  36. 330 ELSE
  37. 340   PRINT T$(CHR%,AW);" ";:F=0:CHR%=0
  38. 350 ENDIF
  39. 360 WHILE S<SH
  40. 370   Y=ABS(INP(&H04E7)-128)
  41. 371   LINE(380,8)-(400,8),PSET,0
  42. 372   LINE(380,8)-(380+ABS(Y)/128*20,8),PSET,4
  43. 380   IF Y>X THEN S=Y:X=(Y*3+X)/4 ELSE S=X:X=(Y+X*3)/4
  44. 390   IF PTRIG(1)=1 THEN BEEP 1 ELSE BEEP 0
  45. 400 WEND
  46. 410 C=0
  47. 420 BC=0
  48. 430 WHILE S>=SH
  49. 440   C=C+1
  50. 450   Y=ABS(INP(&H04E7)-128)
  51. 451   LINE(380,8)-(400,8),PSET,0
  52. 452   LINE(380,8)-(380+ABS(Y)/128*20,8),PSET,4
  53. 460   IF Y>X THEN S=Y:X=(Y*3+X)/4 ELSE S=X:X=(Y+X*3)/4
  54. 470   IF PTRIG(1)=1 THEN BEEP 1 ELSE BEEP 0
  55. 480 WEND
  56. 490 IF C<3 THEN C=0:GOTO 360
  57. 500 GOTO 150
  58. 510 PRINT "Now preparing."
  59. 515 DIM T$(6561,1)
  60. 520 FOR I=0 TO 6561
  61. 530   FOR J=0 TO 1
  62. 540   T$(I,J)="$"
  63. 550   NEXT J
  64. 560 NEXT I
  65. 570 FOR AW=0 TO 1
  66. 580   READ C$,CODE$
  67. 590   WHILE C$<>"@@@"
  68. 600     CODEN=0
  69. 610     LC=LEN(CODE$)
  70. 620     FOR I=0 TO LC-1
  71. 630       IF "."=RIGHT$(LEFT$(CODE$,I+1),1) THEN N=1 ELSE N=2
  72. 640       CODEN=N*(3^I)+CODEN
  73. 650     NEXT I
  74. 660     T$(CODEN,AW)=C$
  75. 670     READ C$,CODE$
  76. 680   WEND
  77. 690 NEXT AW
  78. 700 CONSOLE 1,24,0
  79. 710 LOCATE 0,0,0:PRINT "文字種(PF1):欧文     閾値(PF4 0<->10 PF5):";INT(SH/128*10);"            終了(PF9)"
  80. 712 LINE(380+SH/128*20,7)-(380+SH/128*20,9),PSET,7
  81. 720 LOCATE 0,1
  82. 730 ON KEY(1) GOSUB 770
  83. 740 ON KEY(4) GOSUB 850
  84. 750 ON KEY(5) GOSUB 870
  85. 751 ON KEY(9) GOSUB 890
  86. 753 KEY(1) ON
  87. 754 KEY(4) ON
  88. 755 KEY(5) ON
  89. 756 KEY(9) ON
  90. 760 RETURN
  91. 770 XX=POS(0):YY=CSRLIN
  92. 775 IF AW=0 THEN
  93. 780   AW=1
  94. 790   LOCATE 12,0,0:PRINT "和文"
  95. 800 ELSE
  96. 810   AW=0
  97. 820   LOCATE 12,0,0:PRINT "欧文"
  98. 830 ENDIF
  99. 835 LOCATE XX,YY
  100. 840 RETURN
  101. 850 XX=POS(0):YY=CSRLIN
  102. 852 LINE(380+SH/128*20,7)-(380+SH/128*20,9),PSET,0
  103. 855 SH=SH-1:IF SH<=0 THEN SH=0
  104. 860 LOCATE 42,0,0:PRINT INT(SH/128*10);" "
  105. 861 LOCATE XX,YY
  106. 862 LINE(380+SH/128*20,7)-(380+SH/128*20,9),PSET,7
  107. 865 RETURN
  108. 870 XX=POS(0):YY=CSRLIN
  109. 872 LINE(380+SH/128*20,7)-(380+SH/128*20,9),PSET,0
  110. 875 SH=SH+1:IF SH>=128 THEN SH=128
  111. 880 LOCATE 42,0,0:PRINT INT(SH/128*10);" "
  112. 881 LOCATE XX,YY
  113. 882 LINE(380+SH/128*20,7)-(380+SH/128*20,9),PSET,7
  114. 885 RETURN
  115. 890 END
  116. 1000 DATA A,.-,B,-...,C,-.-.,D,-..,E,.,F,..-.,G,--.,H,....,I,..,J,.---,K,-.-,L,.-..,M,--,N,-.,O,---,P,.--.,Q,--.-,R,.-.,S,...,T,-,U,..-,V,...-,W,.--,X,-..-,Y,-.--,Z,--..
  117. 1010 DATA .,.-.-.-,",",--..--,":",---...,"'",.----.,?,.--..,-,-....-,/,-..-.,(,-.--.,),-.--.-,=,-...-,<,........
  118. 1015 DATA [BT],-...-,[AR],.-.-.,[KN],-.--.,[VA],...-.-
  119. 1020 DATA 1,.----,2,..---,3,...--,4,....-,5,.....,6,-....,7,--...,8,---..,9,----.,0,-----
  120. 1030 DATA @@@,@@@
  121. 1040 DATA イ,.-,ロ,.-.-,ハ,-...,ニ,-.-.,ホ,-..,ヘ,.,ト,..-..,チ,..-.,リ,--.,ヌ,....,ル,-.--.,ヲ,.---,ワ,-.-,カ,.-..,ヨ,--,タ,-.,レ,---,ソ,--.,ツ,.--.,ネ,--.-,ナ,.-.,ラ,...,ム,-,ウ,..-,ィ,.-..-,ノ,..--
  122. 1050 DATA オ,.-...,ク,...-,ヤ,.--,マ,-..-,ケ,-.--,フ,--..,コ,----,エ,-.---,テ,.-.--,ア,--.--,サ,-.-.-,キ,-.-..,ユ,-..--,メ,-...-,ミ,..-.-,シ,--.-.,ェ,.--..,ヒ,--..-,モ,-..-.,セ,.---.,ス,---.-,ン,.-.-.
  123. 1060 DATA ー,.--.-,、,.-.-.-,。,.-.-..,「,-.--.-,」,.-..-.,゙,--,゚,..--..,<,........
  124. 1070 DATA 1,.----,2,..---,3,...--,4,....-,5,.....,6,-....,7,--...,8,---..,9,----.,0,-----
  125. 1080 DATA @@@,@@@
  126.